package br.pacote.negocio;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;

/**
 *
 * @author Christiano
 */
public class JanelaPrincipal extends JFrame implements ActionListener
{
    private JDesktopPane areaDeTrabalho;
    private JMenuBar barraDeMenu;
    private JMenu menuArquivo;
    private JMenu menuManterAluno;
    private JMenu menuManterFuncionario;
    private JMenu menuManterCurso;
    private JMenu menuManterTurma;
    private JMenuItem menuItemSair;
    private JMenuItem menuItemCadastrarAluno;
    private JMenuItem menuItemPesquisarAluno;
    private JMenuItem menuItemCadastrarNota;
    private JMenuItem menuItemCadastrarFrequencia;
    private JMenuItem menuItemEmitirHistorico;
    private JMenuItem menuItemIncluirProfessor;
    private JMenuItem menuItemPesquisarProfessor;
    private JMenuItem menuItemAlocarProfessor;
    private JMenuItem menuItemIncluirCurso;
    private JMenuItem menuItemPesquisarCurso;
    private JMenuItem menuItemIncluirSala;
    private JMenuItem menuItemPesquisarSala;
    private JMenuItem menuItemIncluirTurma;
    private JMenuItem menuItemPesquisarTurma;

    private PesquisarAluno pesquisarAluno;
    private CadastrarAluno cadastrarAluno;
    private CadastrarNota cadastrarNota;
    private CadastrarFrequencia cadastrarFrequencia;
    private PesquisarProfessor pesquisarProfessor;
    private PesquisarCurso pesquisarCurso;

    public JanelaPrincipal()
    {
        super("SIGA - Sistema de Gestão Acadêmica");

      //  if(Login()==1)
       // {
        //Inicialização dos componentes

        areaDeTrabalho = new JDesktopPane();
        barraDeMenu = new JMenuBar();
        menuArquivo = new JMenu("Arquivo");
        menuManterAluno = new JMenu("Manter Aluno");
        menuManterFuncionario = new JMenu("Manter Funcionário");
        menuManterCurso = new JMenu("Manter Curso");
        menuManterTurma = new JMenu("Manter Turma");
        menuItemSair = new JMenuItem("Sair");
        menuItemCadastrarAluno = new JMenuItem("Cadastrar Aluno");
        menuItemPesquisarAluno = new JMenuItem("Pesquisar Aluno");
        menuItemCadastrarNota = new JMenuItem("Cadastrar Nota");
        menuItemCadastrarFrequencia = new JMenuItem("Cadastrar Frequência");
        menuItemEmitirHistorico = new JMenuItem("Emitir Histórico");
        menuItemIncluirProfessor = new JMenuItem("Cadastrar Professor");
        menuItemPesquisarProfessor = new JMenuItem("Pesquisar Professor");
        menuItemAlocarProfessor = new JMenuItem("Alocar Professor");
        menuItemIncluirCurso = new JMenuItem("Cadastrar Curso");
        menuItemPesquisarCurso = new JMenuItem("Pesquisar Curso");
        menuItemIncluirSala = new JMenuItem("Cadastrar Sala");
        menuItemPesquisarSala = new JMenuItem("Pesquisar Sala");
        menuItemIncluirTurma = new JMenuItem("Cadastrar Turma");
        menuItemPesquisarTurma = new JMenuItem("Pesquisar Turma");

        //Montagem da barra de Menu        
        
        barraDeMenu.add(menuArquivo);
        barraDeMenu.add(menuManterAluno);
        barraDeMenu.add(menuManterFuncionario);
        barraDeMenu.add(menuManterCurso);
        barraDeMenu.add(menuManterTurma);
        menuManterAluno.add(menuItemCadastrarAluno);
        menuManterAluno.add(menuItemPesquisarAluno);
        menuManterAluno.add(menuItemCadastrarNota);
        menuManterAluno.add(menuItemCadastrarFrequencia);
        menuManterAluno.add(menuItemEmitirHistorico);
        menuManterFuncionario.add(menuItemIncluirProfessor);
        menuManterFuncionario.add(menuItemPesquisarProfessor);        
        menuManterCurso.add(menuItemIncluirCurso);
        menuManterCurso.add(menuItemPesquisarCurso);
        menuManterTurma.add(menuItemIncluirSala);
        menuManterTurma.add(menuItemIncluirTurma);
        menuManterTurma.add(menuItemPesquisarSala);        
        menuManterTurma.add(menuItemPesquisarTurma);
        menuManterTurma.add(menuItemAlocarProfessor);
        menuArquivo.add(menuItemSair);

        //Associa o AcitonListener aos itens de Menu        
        menuItemSair.addActionListener(this);
        menuItemCadastrarAluno.addActionListener(this);
        menuItemPesquisarAluno.addActionListener(this);
        menuItemCadastrarNota.addActionListener(this);
        menuItemCadastrarFrequencia.addActionListener(this);
        menuItemEmitirHistorico.addActionListener(this);
        menuItemIncluirProfessor.addActionListener(this);
        menuItemPesquisarProfessor.addActionListener(this);
        menuItemAlocarProfessor.addActionListener(this);
        menuItemIncluirCurso.addActionListener(this);
        menuItemPesquisarCurso.addActionListener(this);
        menuItemIncluirSala.addActionListener(this);
        menuItemPesquisarSala.addActionListener(this);
        menuItemIncluirTurma.addActionListener(this);
        menuItemPesquisarTurma.addActionListener(this);

        //configuração da Janela Principal
        setJMenuBar(barraDeMenu);
        getContentPane().add(areaDeTrabalho);
        setBounds(10,10,800,600);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
     //   }else
     //    {
      //      System.exit(0);
       //  }
    }

    private Integer Login()
    {
        
        String login=JOptionPane.showInputDialog("Login");
        JLabel label = new JLabel("Senha:");
        JPasswordField pass = new JPasswordField();
        JOptionPane.showConfirmDialog(null,
        new Object[]{label, pass}, "Password:",
        JOptionPane.OK_CANCEL_OPTION);
        String senha=""+new String(pass.getPassword());

        
        if((login.equals("admin"))&&(senha.equals("admin")))
        {
            return 1;
        }else
        {
           JFrame frame = new JFrame();
           Object[] options = {"Continuar","Sair"};
           Integer n = JOptionPane.showOptionDialog(frame,"Login ou senha incorretos. Tente Novamente","Erro",
                                        JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,
                                        null,
                                        options,
                                        options[1]);
           if(n==0)
           {
               Login();
           }else
            {
               if(n==1)
               System.exit(0);
            }
           System.exit(0);
           return 0;
        }         
    }
    

    public void actionPerformed(ActionEvent e)
    {
        //trata o evento do menuItemAbrir        
        
        if(e.getSource()==menuItemCadastrarAluno)
            {
                try
                {
                    if(cadastrarAluno == null)
                    {
                        try
                        {
                            //Caso a janela de manterAluno ainda não tenha sido instanceada
                            // Cria uma nova janela
                            cadastrarAluno = new CadastrarAluno();
                        } catch (ParseException ex)
                        {
                            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                     //Verifica se a janela já está na área de trabalaho
                     //O método getComponentZorder retorna a posiçao em que
                     //o componente se encontra na tela. Caso o componente não
                     //esteja na tela, o método retorna -1

                    if(areaDeTrabalho.getComponentZOrder(cadastrarAluno) == -1)
                    {
                        //adiciona a janela interna à areadDeTrabalho
                        areaDeTrabalho.add(cadastrarAluno);
                    }
                    //torna a janela Visível
                    cadastrarAluno.setVisible(true);
                    //Seleciona a janelaInterna que acaba de ser aberta
                    cadastrarAluno.setSelected(true);
                }catch (PropertyVetoException i)
                 {
                    //Exceção caso não seja possível selecionar a janela
                    i.printStackTrace();
                 }
            }
        
            if(e.getSource()==menuItemPesquisarAluno)
            {
                try
                {
                    if(pesquisarAluno == null)
                    {
                        try
                        {
                            //Caso a janela de manterAluno ainda não tenha sido instanceada
                            // Cria uma nova janela
                            pesquisarAluno = new PesquisarAluno();
                        } catch (ParseException ex)
                        {
                            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                     //Verifica se a janela já está na área de trabalaho
                     //O método getComponentZorder retorna a posiçao em que
                     //o componente se encontra na tela. Caso o componente não
                     //esteja na tela, o método retorna -1

                    if(areaDeTrabalho.getComponentZOrder(pesquisarAluno) == -1)
                    {
                        //adiciona a janela interna à areadDeTrabalho
                        areaDeTrabalho.add(pesquisarAluno);
                    }
                    //torna a janela Visível
                    pesquisarAluno.setVisible(true);
                    //Seleciona a janelaInterna que acaba de ser aberta
                    pesquisarAluno.setSelected(true);
                }catch (PropertyVetoException i)
                 {
                    //Exceção caso não seja possível selecionar a janela
                    i.printStackTrace();
                 }
            }
            
            if(e.getSource()==menuItemCadastrarNota)
            {
                try
                {
                    if(cadastrarNota == null)
                    {
                        try
                        {
                            //Caso a janela de manterAluno ainda não tenha sido instanceada
                            // Cria uma nova janela
                            cadastrarNota = new CadastrarNota();
                        } catch (ParseException ex)
                        {
                            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                     //Verifica se a janela já está na área de trabalaho
                     //O método getComponentZorder retorna a posiçao em que
                     //o componente se encontra na tela. Caso o componente não
                     //esteja na tela, o método retorna -1

                    if(areaDeTrabalho.getComponentZOrder(cadastrarNota) == -1)
                    {
                        //adiciona a janela interna à areadDeTrabalho
                        areaDeTrabalho.add(cadastrarNota);
                    }
                    //torna a janela Visível
                    cadastrarNota.setVisible(true);
                    //Seleciona a janelaInterna que acaba de ser aberta
                    cadastrarNota.setSelected(true);
                }catch (PropertyVetoException i)
                 {
                    //Exceção caso não seja possível selecionar a janela
                    i.printStackTrace();
                 }
            }
            
            if(e.getSource()==menuItemCadastrarFrequencia)
            {
                try
                {
                    if(cadastrarFrequencia == null)
                    {
                        try
                        {
                            //Caso a janela de manterAluno ainda não tenha sido instanceada
                            // Cria uma nova janela
                            cadastrarFrequencia = new CadastrarFrequencia();
                        } catch (ParseException ex)
                        {
                            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                     //Verifica se a janela já está na área de trabalaho
                     //O método getComponentZorder retorna a posiçao em que
                     //o componente se encontra na tela. Caso o componente não
                     //esteja na tela, o método retorna -1

                    if(areaDeTrabalho.getComponentZOrder(cadastrarFrequencia) == -1)
                    {
                        //adiciona a janela interna à areadDeTrabalho
                        areaDeTrabalho.add(cadastrarFrequencia);
                    }
                    //torna a janela Visível
                    cadastrarFrequencia.setVisible(true);
                    //Seleciona a janelaInterna que acaba de ser aberta
                    cadastrarFrequencia.setSelected(true);
                }catch (PropertyVetoException i)
                 {
                    //Exceção caso não seja possível selecionar a janela
                    i.printStackTrace();
                 }
            }                       
            
            if(e.getSource()==menuItemPesquisarProfessor)
            {
                try
                {
                    if(pesquisarProfessor == null)
                    {
                        try
                        {
                            //Caso a janela de manterAluno ainda não tenha sido instanceada
                            // Cria uma nova janela
                            pesquisarProfessor = new PesquisarProfessor();
                        } catch (ParseException ex)
                        {
                            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                     //Verifica se a janela já está na área de trabalaho
                     //O método getComponentZorder retorna a posiçao em que
                     //o componente se encontra na tela. Caso o componente não
                     //esteja na tela, o método retorna -1

                    if(areaDeTrabalho.getComponentZOrder(pesquisarProfessor) == -1)
                    {
                        //adiciona a janela interna à areadDeTrabalho
                        areaDeTrabalho.add(pesquisarProfessor);
                    }
                    //torna a janela Visível
                    pesquisarProfessor.setVisible(true);
                    //Seleciona a janelaInterna que acaba de ser aberta
                    pesquisarProfessor.setSelected(true);
                }catch (PropertyVetoException i)
                 {
                    //Exceção caso não seja possível selecionar a janela
                    i.printStackTrace();
                 }
            }
            
            if(e.getSource()==menuItemPesquisarCurso)
            {
                try
                {
                    if(pesquisarCurso == null)
                    {
                        try
                        {
                            //Caso a janela de manterAluno ainda não tenha sido instanceada
                            // Cria uma nova janela
                            pesquisarCurso = new PesquisarCurso();
                        } catch (ParseException ex)
                        {
                            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                     //Verifica se a janela já está na área de trabalaho
                     //O método getComponentZorder retorna a posiçao em que
                     //o componente se encontra na tela. Caso o componente não
                     //esteja na tela, o método retorna -1

                    if(areaDeTrabalho.getComponentZOrder(pesquisarCurso) == -1)
                    {
                        //adiciona a janela interna à areadDeTrabalho
                        areaDeTrabalho.add(pesquisarCurso);
                    }
                    //torna a janela Visível
                    pesquisarCurso.setVisible(true);
                    //Seleciona a janelaInterna que acaba de ser aberta
                    pesquisarCurso.setSelected(true);
                }catch (PropertyVetoException i)
                 {
                    //Exceção caso não seja possível selecionar a janela
                    i.printStackTrace();
                 }
            }

               if(e.getSource()==menuItemSair)
               {
                   System.exit(0);
               } 
    }//Fim do método actionPerformed

}//Fim da declaração da classe JanelaPrincipal
